home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Surfer 2.0
/
Internet Surfer 2.0 (Wayzata Technology) (1996).iso
/
pc
/
text
/
mac
/
faqs.355
< prev
next >
Wrap
Text File
|
1996-02-12
|
29KB
|
551 lines
Frequently Asked Questions (FAQS);faqs.355
* DEFCONSTANT has several potentially unexpected properties:
- Once a name has been declared constant, it cannot be used a
the name of a local variable (lexical or special) or function
parameter. Really. See page 87 of CLtL2.
- A DEFCONSTANT cannot be re-evaluated (eg, by reloading the
file in which it appears) unless the new value is EQL to the
old one. Strictly speaking, even that may not be allowed.
(DEFCONSTANT is "like DEFPARAMETER" and hence does an
assignment, which is not allowed if the name has already
been declared constant by DEFCONSTANT.)
Note that this makes it difficult to use anything other
than numbers, symbols, and characters as constants.
- When compiling (DEFCONSTANT name form) in a file, the form
may be evaluated at compile-time, load-time, or both.
(You might think it would be evaluated at compile-time and
the _value_ used to obtain the object at load-time, but it
doesn't have to work that way.)
Declarations:
* You often have to declare the result type to get the most
efficient arithmetic. Eg,
(the fixnum (+ (the fixnum e1) (the fixnum e2)))
rather than
(+ (the fixnum e1) (the fixnum e2))
* Declaring the iteration variable of a DOTIMES to have type FIXNUM
does not guarantee that fixnum arithmetic will be used. That is,
implementations that use fixnum-specific arithmetic in the presence
of appropriate declaration may not think _this_ declaration is
sufficient. It may help to declare that the limit is also a
fixnum, or you may have to write out the loop as a DO and add
appropriate declarations for each operation involved.
FORMAT related errors:
* When printing messages about files, filenames like foo~ (a GNU-Emacs
backup file) may cause problems with poorly coded FORMAT control
strings.
* Beware of using an ordinary string as the format string,
i.e., (format t string), rather than (format t "~A" string).
Miscellaneous:
* Be careful of circular lists and shared list structure.
* Watch out for macro redefinitions.
* If you use (SETF (SYMBOL-FUNCTION 'foo) ...) to change the definition of
a built-in Lisp function named FOO, be aware that this may not work
correctly (i.e., as desired) in compiled code in all Lisps. In some Lisps,
the compiler treats certain symbols in the LISP package specially,
ignoring the function definition.
* A NOTINLINE may be needed if you want SETF of SYMBOL-FUNCTION to
affect calls within a file. (See CLtL2, page 686.)
* When dividing two numbers, beware of creating a rational number where
you intended to get an integer or floating point number. Use TRUNCATE
or ROUND to get an integer and FLOAT to ensure a floating point
number. This is a major source of errors when porting ZetaLisp or C
code to Common Lisp.
* If your code doesn't work because all the symbols are mysteriously
in the keyword package, one of your comments has a colon (:) in
it instead of a semicolon (;).
----------------------------------------------------------------
[3-12] When is it right to use EVAL?
Hardly ever. Any time you think you need to use EVAL, think hard about it.
EVAL is useful when implementing a facility that provides an external
interface to the Lisp interpreter. For instance, many Lisp-based editors
provide a command that prompts for a form and displays its value.
Inexperienced macro writers often assume that they must explicitly EVAL the
subforms that are supposed to be evaluated, but this is not so; the correct
way to write such a macro is to have it expand into another form that has
these subforms in places that will be evaluated by the normal evaluation
rules. Explicit use of EVAL in a macro is likely to result in one of two
problems: the dreaded "double evaluation" problem, which may not show up
during testing if the values of the expressions are self-evaluating
constants (such as numbers); or evaluation at compile time rather than
runtime. For instance, if Lisp didn't have IF and one desired to write it,
the following would be wrong:
(defmacro if (test then-form &optional else-form)
;; this evaluates all the subforms at compile time, and at runtime
;; evaluates the results again.
`(cond (,(eval test) ,(eval then-form))
(t ,(eval else-form))))
(defmacro if (test then-form &optional else-form)
;; this double-evaluates at run time
`(cond ((eval ,test) (eval ,then-form))
(t (eval ,else-form)))
This is correct:
(defmacro if (test then-form &optional else-form)
`(cond (,test ,then-form)
(t ,else-form)))
On the other hand, EVAL can sometimes be necessary when the only portable
interface to an operation is a macro.
----------------------------------------------------------------
[3-13] Why does my program's behavior change each time I use it?
Most likely your program is altering itself, and the most common way this
may happen is by performing destructive operations on embedded constant
data structures. For instance, consider the following:
(defun one-to-ten-except (n)
(delete n '(1 2 3 4 5 6 7 8 9 10)))
(one-to-ten-except 3) => (1 2 4 5 6 7 8 9 10)
(one-to-ten-except 5) => (1 2 4 6 7 8 9 10) ; 3 is missing
The basic problem is that QUOTE returns its argument, *not* a copy of
it. The list is actually a part of the lambda expression that is in
ONE-TO-TEN-EXCEPT's function cell, and any modifications to it (e.g., by
DELETE) are modifications to the actual object in the function definition.
The next time that the function is called, this modified list is used.
In some implementations calling ONE-TO-TEN-EXCEPT may even result in
the signalling of an error or the complete aborting of the Lisp process. Some
Lisp implementations put self-evaluating and quoted constants onto memory
pages that are marked read-only, in order to catch bugs such as this.
Details of this behavior may vary even within an implementation,
depending on whether the code is interpreted or compiled (perhaps due to
inlined DEFCONSTANT objects).
All of these behaviors are allowed by the draft ANSI Common Lisp
specification, which specifically states that the consequences of modifying
a constant are undefined (X3J13 vote CONSTANT-MODIFICATION:DISALLOW).
To avoid these problems, use LIST to introduce a list, not QUOTE. QUOTE
should be used only when the list is intended to be a constant which
will not be modified. If QUOTE is used to introduce a list which will
later be modified, use COPY-LIST to provide a fresh copy.
For example, the following should all work correctly:
o (remove 4 (list 1 2 3 4 1 3 4 5))
o (remove 4 '(1 2 3 4 1 3 4 5)) ;; Remove is non-destructive.
o (delete 4 (list 1 2 3 4 1 3 4 5))
o (let ((x (list 1 2 4 1 3 4 5)))
(delete 4 x))
o (defvar *foo* '(1 2 3 4 1 3 4 5))
(delete 4 (copy-list *foo*))
(remove 4 *foo*)
(let ((x (copy-list *foo*)))
(delete 4 x))
The following, however, may not work as expected:
o (delete 4 '(1 2 3 4 1 3 4 5))
----------------------------------------------------------------
[3-14] When producing formatted output in Lisp, where should you put the
newlines (e.g., before or after the line, FRESH-LINE vs TERPRI,
~& vs ~% in FORMAT)?
Where possible, it is desirable to write functions that produce output
as building blocks. In contrast with other languages, which either
conservatively force a newline at various times or require the program
to keep track of whether it needs to force a newline, the Lisp I/O
system keeps track of whether the most recently printed character was
a newline or not. The function FRESH-LINE outputs a newline only if
the stream is not already at the beginning of a line. TERPRI forces a
newline irrespective of the current state of the stream. These
correspond to the ~& and ~% FORMAT directives, respectively. (If the
Lisp I/O system can't determine whether it's physically at the
beginning of a line, it assumes that a newline is needed, just in case.)
Thus, if you want formatted output to be on a line of its own, start
it with ~& and end it with ~%. (Some people will use a ~& also at the
end, but this isn't necessary, since we know a priori that we're not
at the beginning of a line. The only exception is when ~& follows a
~A, to prevent a double newline when the argument to the ~A is a
formatted string with a newline at the end.) For example, the
following routine prints the elements of a list, N elements per line,
and then prints the total number of elements on a new line:
(defun print-list (list &optional (elements-per-line 10))
(fresh-line)
(loop for i upfrom 1
for element in list do
(format t "~A ~:[~;~%~]" element (zerop (mod i elements-per-line))))
(format t "~&~D~%" (length list)))
----------------------------------------------------------------
[3-15] I'm using DO to do some iteration, but it doesn't terminate.
Your code probably looks something like
(do ((sublist list (cdr list))
..)
((endp sublist)
..)
..)
or maybe
(do ((index start (+ start 2))
..)
((= index end)
..)
..)
The problem is caused by the (cdr list) and the (+ start 2) in the
first line. You're using the original list and start index instead of
the working sublist or index. Change them to (cdr sublist) and
(+ index 2) and your code should start working.
----------------------------------------------------------------
;;; *EOF*
Xref: bloom-picayune.mit.edu comp.lang.lisp:8752 comp.lang.scheme:5783 news.answers:4562
Path: bloom-picayune.mit.edu!enterpoop.mit.edu!spool.mu.edu!uunet!ogicse!das-news.harvard.edu!cantaloupe.srv.cs.cmu.edu!crabapple.srv.cs.cmu.edu!mkant
From: mkant+@cs.cmu.edu (Mark Kantrowitz)
Newsgroups: comp.lang.lisp,comp.lang.scheme,news.answers
Subject: FAQ: Lisp Implementations and Mailing Lists 4/6 [Monthly posting]
Summary: Questions about Lisp/Scheme Implementations and Mailing Lists
Message-ID: <lisp-faq-4.text_724237334@cs.cmu.edu>
Date: 13 Dec 92 09:02:26 GMT
Article-I.D.: cs.lisp-faq-4.text_724237334
Expires: Tue, 26 Jan 1993 09:02:14 GMT
Sender: news@cs.cmu.edu (Usenet News System)
Reply-To: lisp-faq@think.com
Followup-To: poster
Organization: School of Computer Science, Carnegie Mellon
Lines: 1010
Approved: news-answers-request@MIT.Edu
Supersedes: <lisp-faq-4.text_721645350@cs.cmu.edu>
Nntp-Posting-Host: a.gp.cs.cmu.edu
Archive-name: lisp-faq/part4
Last-Modified: Thu Nov 5 19:30:40 1992 by Mark Kantrowitz
Version: 1.27
;;; ****************************************************************
;;; Answers to Frequently Asked Questions about Lisp ***************
;;; ****************************************************************
;;; Written by Mark Kantrowitz and Barry Margolin
;;; lisp-faq-4.text -- 55661 bytes
This post contains Part 4 of the Lisp FAQ. It is cross-posted to the
newsgroup comp.lang.scheme because it contains material of interest to
Scheme people. The other parts of the Lisp FAQ are posted only to the
newsgroups comp.lang.lisp and news.answers.
If you think of questions that are appropriate for this FAQ, or would
like to improve an answer, please send email to us at lisp-faq@think.com.
Lisp/Scheme Implementations and Mailing Lists (Part 4):
[4-0] Free Lisp implementations.
[4-1] Commercial Lisp implementations.
[4-2] Free Scheme implementations.
[4-3] Commercial Scheme implementations.
[4-4] Other Commercial Lisp-like Language implementations.
[4-5] Where can I get an implementation of Prolog in Lisp?
[4-6] What is Dylan?
[4-7] What Lisp-related discussion groups and mailing lists exist?
[4-8] What are R4RS and IEEE P1178?
[4-9] How do I do object-oriented programming in Scheme?
Search for [#] to get to question number # quickly.
----------------------------------------------------------------
[4-0] Free Lisp implementations.
Repositories of Lisp source code are described in the answer to
question [6-1].
Remember, when ftping compressed or compacted files (.Z, .arc, .fit,
etc.) to use binary mode for retrieving the files.
Kyoto Common Lisp (KCL) is free, but requires a license. Conforms to CLtL1.
KCL was written by T. Yuasa <yuasa@tutics.tut.ac.jp> and M. Hagiya
<hagiya@is.s.u-tokyo.ac.jp> at Kyoto University. Austin Kyoto Common Lisp
(AKCL) is a collection of ports, bug fixes and improvements to KCL
by Bill Schelter (<wfs@cli.com> or <wfs@rascal.ics.utexas.edu>). {A}KCL
generates C code which it compiles with the local C compiler. Both are
available by anonymous ftp from rascal.ics.utexas.edu [128.83.138.20],
cli.com [192.31.85.1], or [133.11.11.11] (a machine in Japan)
in the directory /pub. KCL is in the file kcl.tar, and AKCL is in the
file akcl-xxx.tar.Z (take the highest value of xxx). To obtain KCL, one
must first sign and mail a copy of the license agreement to: Special
Interest Group in LISP, c/o Taiichi Yuasa, Department of Computer Science,
Toyohashi University of Technology, Toyohashi 441, JAPAN. Runs on Sparc,
IBM RT, RS/6000, DecStation 3100, hp300, hp800, Macintosh II (under AUX),
mp386, IBM PS2, Silicon Graphics 4d, Sun3, Sun4, Sequent Symmetry,
IBM 370, NeXT and Vax. A port to DOS is in beta test as
math.utexas.edu:pub/beta2.zip. Commercial versions of {A}KCL are available
from Austin Code Works, 1110 Leafwood Lane, Austin, TX 78750-3409,
Tel. 512-258-0785, Fax 512-258-1342, including a CLOS for AKCL.
See also Ibuki, below.
XLISP is free, and runs on the IBM PC (MSDOS), Amiga (AmigaDOS),
Atari ST (TOS), Apple Macintosh, and Unix. It should run on
anything with a C compiler. It was written by David Michael Betz,
167 Villa Avenue #11, Los Gatos, CA 95032, 408-354-9303 (H),
408-862-6325 (W), dbetz@apple.com. The reference manual was
written by Tim Mikkelsen. Version 2.0 is available by anonymous ftp from
cs.orst.edu:/pub/xlisp/ [128.193.32.1] or
sumex-aim.stanford.edu:info-mac/lang/
Version 2.1 is the same as XLISP 2.0, but modified to bring it closer
to Common Lisp and with several bugs fixed. It can be obtained by
anonymous ftp from
glia.biostr.washington.edu:/pub/xlisp 128.95.10.115
wasp.eng.ufl.edu:/pub 128.227.116.1
as the files xlisp21e.zip and xlisp21e.tar.Z. The xlisp21e.zip file comes
with IBM/PC executables. For obtaining a copy through US mail, send
email to Tom Almy, toma@sail.labs.tek.com.
CMU Common Lisp is free, and runs on Sparcs (Mach and SunOs),
DecStation 3100 (Mach), IBM RT (Mach) and requires 16mb RAM, 25mb
disk. It includes an incremental compiler, Hemlock emacs-style editor,
source-code level debugger, code profiler and is mostly X3J13
compatible, including the new loop macro. It is available by anonymous
ftp from any CMU CS machine, such as ftp.cs.cmu.edu [128.2.206.173], in the
directory /afs/cs.cmu.edu/project/clisp/release. Login with username
"anonymous" and "userid@host" (your email address) as password. Due to
security restrictions on anonymous ftps (some of the superior
directories on the path are protected against outside access), it is
important to "cd" to the source directory with a single command.
Don't forget to put the ftp into binary mode before using "get" to
obtain the compressed/tarred files. The binary releases are
contained in files of the form
<version>-<machine>_<os>.tar.Z
Other files in this directory of possible interest are
16e-source.tar.Z, which contains all the ".lisp" source files
used to build version 16e. A listing of the current contents of the
release area is in the file FILES. You may also use "dir" or "ls" to
see what is available. Bug reports should be sent to cmucl-bugs@cs.cmu.edu.
PC LISP is a Lisp interpreter for IBM PCs (MSDOS) available from any
site that archives the group comp.binaries.ibm.pc, such as
ix1.cc.utexas.edu:/microlib/pc/languages/pc-lisp/ps-lisp.arc
wuarchive.wustl.edu:/mirrors/msdos/lisp/pclisp30.zip
ucdavis.ucdavis.edu:/pub/pclisp30.zip
PC-LISP is a Franz LISP dialect and is by no means Common LISP
compatible. It is also available directly from the author by sending
2 blank UNFORMATTED 360K 48TPI IBM PC diskettes, a mailer and
postage to: Peter Ashwood-Smith, 8 Du Muguet, Hull, Quebec, CANADA,
J9A-2L8; phone 819-595-9032 (home). Source code is available from the
author for $15.
WCL is an implementation of Common Lisp for Sparc based workstations.
It is available free by anonymous ftp from sunrise.stanford.edu in the
pub/wcl directory. The file wcl-2.14.tar.Z contains the WCL
distribution, including CLX and PCL; wgdb-4.2.tar.Z contains a version
of the GDB debugger which has been modified to grok WCL's Lisp; and
gcc-2.1.tar.Z contains the GNU C compiler (2.2.2 does not work!). WCL
provides a large subset of Common Lisp as a Unix shared library that
can be linked with Lisp and C code to produce efficient and small
applications. WCL provides CLX R5 as a shared library, and comes with
PCL and a few other utilities. For further information on WCL, see
the paper published in the proceedings of the 1992 Lisp and Functional
Programming Conference, a copy of which appears in the wcl directory
as lfp-paper.ps, or look in the documentation directory of the WCL
distribution. Written by Wade Hennessey <wade@leland.stanford.edu>.
Please direct any questions to wcl@sunrise.stanford.edu.
If you would like to be added to a mailing list for information about
new releases, send email to wcl-request@sunrise.stanford.edu.
CLISP is a Common Lisp (CLtL1) implementation by Bruno Haible and
Michael Stoll of Karlsruhe University in Germany. German and English
versions are available. It runs on Atari-ST, DOS, Linux, and Sun4
(SunOS 4.1.1), An OS/2 port is in progress. CLISP is for non-profit
use at universities and at home, not at companies. It includes an
interpreter and a compiler. It runs in 1.5mb of memory. Some of the
implementations may be slightly buggy. Some include PCL; others
include only Closette. Available by anonymous ftp from
ma2s2.mathematik.uni-karlsruhe.de [129.13.115.2] in the directory
/pub/lisp/clisp. For more information, contact
haible@ma2s2.mathematik.uni-karlsruhe.de.
----------------------------------------------------------------
[4-1] Commercial Lisp implementations.
Macintosh Common Lisp (MCL 2.0) runs on the Apple Macintosh (Mac+ or
higher with 4mb RAM and system software 6.0.4 or later or AUX 3.0) and
is available from APDA for $495. It includes a native CLOS Macintosh
Toolbox/interface toolkit, ephemeral garbage collection, incremental
compiler, window-based debugger, source-code stepper, object
inspector, emacs-style editor, and a foreign function interface. With
MCL version 2.0, Apple has started distributing a CD-ROM which
contains, among other things, a large collection of Lisp code,
complete MCL manuals in an online-browser format, the CLIM 1.0 manual
in TeX and postscript, and copies of Gambit 1.8 Scheme, SIOD 2.8
Scheme, Pixie Scheme, and a demo version of MacScheme. For more
information, write to: APDA, Apple Computer Inc., 20525 Mariani
Avenue, MS 33-G, Cupertino, CA 95014-6299 or call toll free
1-800-282-2732 (US), 1-800-637-0029 (Canada), 1-408-562-3910. Their
fax number is 1-408-562-3971 and their telex is 171-576. Email may
also be sent to APDA@applelink.apple.com. CLIM for MCL is available
as a separate product from Lucid, Inc., 707 Laurel Street, Menlo Park,
CA 94025 U.S.A., 415-329-8400, fax: 415-329-8480, <sales@lucid.com>.
Procyon Common Lisp runs on either the Apple Macintosh or IBM PC (386/486
or OS/2 native mode), costing 450 pounds sterling ($675) educational,
1500 pounds ($2250) commercial. It requires 2.5mb RAM on the Macintosh
and 4mb RAM on PCs (4mb and more than 4mb recommended respectively). It
is a full graphical environment, and includes a native CLOS with
meta-object protocol, incremental compilation, foreign function
interface, object inspector, text and structure editors, and debugger.
Write to: Scientia Ltd., St. John's Innovation Centre, Cowley Road,
Cambridge, CB4 4WS, UK, with phone +44-223-421221, fax +44-223-421218,
and email UK0061@applelink.apple.com. An alternate address for US
customers is: ExperTelligence, Inc., 5638 Hollister Ave, Suite 302,
Goleta, CA 93117, or call 1-800-828-0113, (805) 967-1797. Their fax is
(805) 964-8448 and email is D2042@applelink.apple.com. [The rights to the
MS Windows version of Procyon were sold to Franz who are marketing and
developing it as Allegro CL\PC. See Allegro's entry for more
information.]
Franz Lisp 2.0 runs on the Apple Macintosh, requiring 1mb RAM for the
interpreter ($99) and 2.5mb RAM for the compiler ($199). Student prices
are $60 for the interpreter and $110 for the interpreter and compiler.
Includes editor and language reference manual. Complete sources are
available for $649. The ALJABR symbolic mathematics system costs $249.
Write to: Fort Pond Research, 15 Fort Pond Road, Acton, MA 01720,
call 1-508-263-9692, or send mail to order@fpr.com.
Allegro Common Lisp 4.1 runs on a variety of platforms, including
Sparcs, RS6000, HP700, Silicon Graphics, DecStation (prices start at
$4,500) and NeXT ($2,000). It requires 12mb RAM for the 680x0 and 16mb
for RISC. It includes native CLOS, X-windows support, Unix interface,
incremental compilation, generational garbage collection, and a
foreign function interface. Options include Allegro Composer
(development environment, including debugger, inspector, object
browser, time/space code profiler, and a graphical user interface),
Common LISP Interface Manager (CLIM is a Symbolic's Dynamic Windows
clone) and Allegro CLIP (a parallel version of Lisp for the Sequent).
Franz has bought the rights to the Windows version of Procyon CL, and
are now marketing it as Allegro CL\PC for Windows 3.1. Write to:
Franz Inc., 1995 University Avenue, Berkeley, CA 94704 or call (510)
548-3600 (area code was 415), fax (510) 548-8253, telex 340179
WUPUBTLXSFO. Bug reports can be mailed to bugs@franz.com. Questions
about Franz Inc. products (e.g., current and special pricing) can be
sent to info@franz.com.
Ibuki Common Lisp is a commercialized and improved version of Kyoto
Common Lisp. It runs on over 30 platforms, including Sun3, Sparc, Dec
(Ultrix), Apollo, HP 9000, IBM RS/6000, Silicon Graphics and IBM PCs.
It includes an incremental compiler, interpreter, foreign function
interface. It generates C code from the Lisp and compiles it using the
local C compiler. Image size is about 3mb. Cost is $2800 (workstations),
$3500 (servers), $700 (IBM PCs). Supports CLOS and CLX ($200 extra).
Source code is available at twice the cost. Ibuki now also has a product
called CONS which compiles Lisp functions into linkable Unix libraries.
Write to: Ibuki Inc., PO Box 1627, Los Altos, CA 94022, or call
415-961-4996, fax 415-961-8016, or send email to Richard Weyhrauch,
rww@ibuki.com.
Lucid Common Lisp runs on a variety of platforms, including PCs (AIX),
Apollo, HP, Sun-3, Sparc, IBM RT, IBM RS/6000, Decstation 3100,
Silicon Graphics, and Vax, and costs $2500 (IBM PCs), $4400 (other
platforms). Lucid includes native CLOS, a foreign function interface,
and generational garbage collection. CLIM is available for Lucid as
a separate product. Write to Lucid Inc., 707 Laurel Street, Menlo Park,
CA 94025, call toll free 800-225-1386 (or 800-843-4204), 415-329-8400,
fax 415-329-8480, or email to sales@lucid.com for information on pricing,
product availability, etc. Technical questions may be addressed to
customer-support@lucid.com. See also the comments in question [1-1]
on the wizards.doc file that comes with the release.
Medley is a Common Lisp development environment that includes a native
CLOS w/MOP, window toolkit, window-based debugger, incremental
compiler, structure editor, inspectors, stepper, cross-referencer,
code analysis tools, and browsers. It is the successor to InterLisp-D.
It runs on a variety of platforms, including Suns, DecStations,
386/486s, IBM RS/6000, MIPS, HP, and Xerox 1186. Requires Unix and 8mb
RAM. Developer version costs $995 and run-time version $300.
Instructional costs $250/copy or $1250 site license. Write to: Venue,
1549 Industrial Rd, San Carlos, CA 94070, call 1-800-228-5325,
1-415-508-9672, fax 415-508-9770, or email
aisupport.mv@envos.xerox.com.
Golden Common Lisp (GCLisp) runs on IBM PCs under DOS and Windows,
costing $2,000 ($250 extra for Gold Hill Windows), and includes an
incremental compiler, foreign function interface, interactive
debugger, and emacs-like editor. It supports DDE and other Windows
stuff, and is CLtL1 compatible. Supports PCL. It requires 4mb RAM,
and 12mb disk. See a review in PC-WEEK 4/1/91 comparing GCLisp with
an older version of MCL. Write to: Gold Hill Computers, 26 Landsdowne
Street, Cambridge, MA 02139, call (617) 621-3300, or fax (617) 621-0656.
Star Sapphire Common LISP provides a subset of Common Lisp and includes
an emacs-like editor, compiler, debugger, DOS graphics and CLOS. It
runs on IBM PCs (MSDOS), requires 640k RAM, a hard disk, and costs $100.
Write to: Sapiens Software Corporation, PO Box 3365,
Santa Cruz, CA 95063-3365, call (408) 458-1990, or fax (408) 425-0905.
Sapiens Software also has a Lisp-to-C translator in beta-test.
NanoLISP is a Lisp interpreter for DOS systems that supports a
large subset of the Common Lisp standard, including lexical and
dynamic scoping, four lambda-list keywords, closures, local functions,
macros, output formatting, generic sequence functions, transcendental
functions, 2-d arrays, bit-arrays, sequences, streams, characters
double-floats, hash-tables and structures. Runs in DOS 2.1 or higher,
requiring only 384k of RAM. Cost is $100. Write to: Microcomputer Systems
Consultants, PO Box 6646, Santa Barbara, CA 93160 or call (805) 967-2270.
Software Engineer is a Lisp for Windows that creates small stand-alone
executables. It is a subset of Common Lisp, but includes CLOS. It
requires 2mb RAM, but can use up to 16mb of memory, generating 286
specific code. It costs $250. Write to: Raindrop Software, 833
Arapaho Road, Suite 104, Richardson, TX 75081, call (214) 234-2611, or
fax (214) 234-2674.
muLISP-90 is a small Lisp which runs on IBM PCs (or the HP 95LX
palmtop), MS-DOS version 2.1 or later. It isn't Common Lisp, although
there is a Common Lisp compatibility package which augments muLISP-90
with over 450 Common Lisp special forms, macros, functions and control
variables. Includes a screen-oriented editor and debugger, a window
manager, an interpreter and a compiler. Among the example programs is
DOCTOR, an Eliza-like program. The runtime system allows one to create
small EXE or COM executables. Uses a compact internal representation
of code to minimize space requirements and speed up execution. The
kernel takes up only 50k of space. Costs $400. Write to Soft
Warehouse, Inc., 3660 Waialae Avenue, Suite 304, Honolulu, HI
96816-3236, call 1-808-734-5801, or fax 1-808-735-1105.
CLOE (Common Lisp Operating Environment) is a cross-development
environment for IBM PCs (MSDOS) and Symbolics Genera. It includes
CLOS, condition error system, generational garbage collection,
incremental compilation, code time/space profiling, and a stack-frame
debugger. It costs from $625 to $4000 and requires 4-8mn RAM and a 386
processor. Write to: Symbolics, 6 New England Tech Center,
521 Virginia Road, Concord, MA 01742, call 1-800-394-5522 or
508-287-1000 or fax 508-287-1099.
Top Level Common Lisp includes futures, a debugger, tracer, stepper,
foreign function interface and object inspector. It runs on Unix
platforms, requiring 8mb RAM, and costs $687. Write to: Top Level,
100 University Drive, Amherst, MA 01002, call (413) 549-4455, or fax
(413) 549-4910.